現在爬蟲進步了,很多人也越來越了解到HTTP代理了。網絡爬蟲都清楚,訪問一個網站久了,IP會被限制,這個時候使用地址池就是一個非常明智的選擇。但是搭建地址池不是很難,但是需要去驗證一下才能保證這些地址都是可以訪問的,這里可以使用GO語言爬蟲代碼驗證方式:
package main import ( "net/url" "net/http" "bytes" "fmt" "io/ioutil" ) // 代理服務器(產品官網 www.16yun.cn) const ProxyServer = "t.16yun.cn:31111" type ProxyAuth struct { Username string Password string } func (p ProxyAuth) ProxyClient() http.Client { var proxyURL *url.URL if p.Username != ""&& p.Password!="" { proxyURL, _ = url.Parse("http://" + p.Username + ":" + p.Password + "@" + ProxyServer) }else{ proxyURL, _ = url.Parse("http://" + ProxyServer) } return http.Client{Transport: &http.Transport{Proxy:http.ProxyURL(proxyURL)}} } func main() { targetURI := "https://httpbin.org/ip" // 初始化 proxy http client client := ProxyAuth{"username", "password"}.ProxyClient() request, _ := http.NewRequest("GET", targetURI, bytes.NewBuffer([] byte(``))) // 設置Proxy-Tunnel // rand.Seed(time.Now().UnixNano()) // tunnel := rand.Intn(10000) // request.Header.Set("Proxy-Tunnel", strconv.Itoa(tunnel) ) response, err := client.Do(request) if err != nil { panic("failed to connect: " + err.Error()) } else { bodyByte, err := ioutil.ReadAll(response.Body) if err != nil { fmt.Println("讀取 Body 時出錯", err) return } response.Body.Close() body := string(bodyByte) fmt.Println("Response Status:", response.Status) fmt.Println("Response Header:", response.Header) fmt.Println("Response Body:n", body) } }這個方式可以驗證自己的地址池是否可用如果返回響應碼是200就說明你搭建的地址池存活率還是可以的,希望這個方法能幫到你。
推薦文章